
const state = {
  cachedViews: [] // 缓存的路由name数组
}

const mutations = {
  /**
   * 添加路由到缓存列表
   * @param {Object} state - 模块状态
   * @param {Object} view - 路由对象（需包含name属性）
   */
  ADD_CACHED_VIEW: (state, view) => {
    // 防止重复添加相同路由
    if (state.cachedViews.includes(view.name)) return
    // 将路由name加入缓存数组
    state.cachedViews.push(view.name)
  },

  DEL_CACHED_VIEW: (state, view) => {
    // 查找路由name在数组中的索引
    const index = state.cachedViews.indexOf(view.name)
    // 如果存在则移除
    index > -1 && state.cachedViews.splice(index, 1)
  }
}

const getters = {
  /**
   * 获取当前所有缓存的路由name数组
   */
  cachedViews: state => state.cachedViews,
  /**
   * 判断是否存在缓存的路由
   * @returns {boolean} 是否有缓存的路由
   */
  hasCachedViews: state => state.cachedViews.length > 0
}

export default {
  // 启用命名空间，避免与其他模块冲突
  namespaced: true,
  state,
  mutations,
  getters
}
